// h5MessageHandler.js

export default class H5MessageHandler {
  constructor() {
    // 添加window.message事件监听器
    window.addEventListener('message', this.handleUniappMessage.bind(this), false);
  }

  // 处理来自uniapp的消息
  handleUniappMessage(event) {
    // if (event.origin !== 'your_uniapp_domain') return; // 检查消息来源是否可信
    
    const message = JSON.parse(event.data);

    switch (message.action) {
      case 'gameAction':
        this.onReceiveGameAction(message.data);
        break;
      // 其他消息类型...
      default:
        console.log('未知操作类型:', message.action);
    }
  }

  // 接收到特定游戏动作时的处理函数
  onReceiveGameAction(data) {
    console.log('Received game action from uniapp:', data);
    // 在这里处理接收到的数据并执行相应逻辑
  }

  // 发送消息给uniapp
  sendMessageToUniapp(action, data) {
    const message = { action: action, data: data };
    window.parent.postMessage(JSON.stringify(message), '*');
  }
}

// 使用示例
// import H5MessageHandler from './h5MessageHandler';

// const messageHandler = new H5MessageHandler();

// 当需要发送数据到uniapp时
// messageHandler.sendMessageToUniapp('gameStatusUpdate', { score: 100, level: 3 });

// H5小游戏内部会自动处理从uniapp接收的消息
